const gulp =  require('gulp');
const del = require('del');// 删除文件
const less = require('gulp-less');// 编译less 到css
const autoprefixer = require('gulp-autoprefixer'); //添加兼容代码
const cleanCss = require('gulp-clean-css'); // 添加兼容代码并且压缩

// quick demo:

// gulp.task('default', () => {
//   gulp.src(['07-gulp/src/**/*'])
//     .pipe(gulp.dest('build/'));
// });

// gulp less
gulp.task('less', () => {
  gulp.src('07-gulp/**/*.less')
    .pipe(less())
    .pipe(autoprefixer({
      browsers: ['last 5 versions', 'Firefox > 20'],
      cascade: false
    }))
    .pipe(cleanCss())
    .pipe(gulp.dest('07-gulp/build/'));
});

// package del
gulp.task('clean:build', function (cb) {
  del.sync([ //- 使用同步方法避免清空新编译的文件
    '07-gulp/build/report.csv',
    // 这里我们使用一个通配模式来匹配 `mobile` 文件夹中的所有东西
    '07-gulp/build/**/*',
    // 我们不希望删掉这个文件，所以我们取反这个匹配模式
    '!07-gulp/build/deploy.json'
  ], cb);
});

// gulp (default)
// gulp 命令会直接执行default任务,其实就是执行[]里面的依赖 - 从clean开始顺序执行
// 最后进入回调函数执行defualt任务的内容
gulp.task('default',['clean:build', 'less'], ()=> {
  console.log('done!');
});

// 监听文件变化 时 执行特定任务 -- 这在开发时特别有用
gulp.task('watch', ()=> {
  var watcher = gulp.watch('07-gulp/src/**/*', ['default']);
  watcher.on('change', (event) => {
    console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
  });
});
